/**
 * 工具类函数集合
 *
 * 包含:
 * 千分位格式化
 * 菜单数据转换
 *
 */

// 千分位格式化
export function formatNumber(num: number): string {
  // 判断传入的是否为数字
  if (isNaN(num)) {
    throw new Error("传入参数必须是数字");
  }
  // 使用正则表达式进行千分位格式化
  return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}

/**
 * 菜单数据转换
 * 将后端返回的菜单数据转换为前端需要的格式
 */
export function trtansformMenu(nodes: any) {
  return nodes.map((node: any) => {
    const newNode = {
      label: node.name,
      url: node.url, // 树状结构需要 node-key 字段当唯一标识,所以用 url 作为 node-key ,来动态设置勾选
      children: [] as any[],
    };
    // 如果有子节点,则递归调用 trtansformMenu 进行转换
    if (node.children) {
      newNode.children = trtansformMenu(node.children);
    }

    return newNode;
  });
}
